Thông báo

Collapse
No announcement yet.

{HELP} Dùng VDK tạo reset cho chính nó !

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • {HELP} Dùng VDK tạo reset cho chính nó !

    Mình dùng tính hiệu của 8051 để reset nó nhưng sao không được, nó cứ reset liên tục. Ví dụ mình code khi có logic 0 vào port 1.1 thì port 1.2 tạo ra tín hiệu, mình lấy tín hiệu đó để reset nó (có thể dùng wa relay), nhưng nó cứ bị reset liên tục.

  • #2
    reset cho VDK ko nhất thiết phải tác động vào chân reset, bạn có thể dùng lệnh nhảy lên đầu chương trình chính là xem như reset rồi

    Comment


    • #3
      dùng Watchdog đi pác, nếu còn thừa nhiều thì dùng ngắt trong ngắt dùng while(1). còn nếu muốn dùng reset ngoài thì dùng thêm 1 con tran đi, sau đó cho qua 1 mạch FF để giữ tín hiệu
      |

      Comment


      • #4
        Nguyên văn bởi thanhlonguit Xem bài viết
        Mình dùng tính hiệu của 8051 để reset nó nhưng sao không được, nó cứ reset liên tục. Ví dụ mình code khi có logic 0 vào port 1.1 thì port 1.2 tạo ra tín hiệu, mình lấy tín hiệu đó để reset nó (có thể dùng wa relay), nhưng nó cứ bị reset liên tục.
        8051 (89C51) bị reset ở mức 1 và khi nó đang reset thì các PORT 1,2,3 ở mức cao.
        Do đó nếu nối PORT1.2 vào chân Reset thì khi nó không thể thoát khỏi trạng thái reset được do PORT1.2 luôn là mức 1.
        Có thể dùng kiểu khi có mức 0 ở chân P1.1 thì cho chạy lệnh ORG 0000H.

        Comment


        • #5
          Nguyên văn bởi chung1608 Xem bài viết
          reset cho VDK ko nhất thiết phải tác động vào chân reset, bạn có thể dùng lệnh nhảy lên đầu chương trình chính là xem như reset rồi
          Vậy chưa phải là Reset vì các biến trong RAM, các ngoại vi sẽ không bị xóa... Rất có thể làm loạn chương trình...

          Nguyên văn bởi duong_act Xem bài viết
          8051 (89C51) bị reset ở mức 1 và khi nó đang reset thì các PORT 1,2,3 ở mức cao.
          Do đó nếu nối PORT1.2 vào chân Reset thì khi nó không thể thoát khỏi trạng thái reset được do PORT1.2 luôn là mức 1.
          Có thể dùng kiểu khi có mức 0 ở chân P1.1 thì cho chạy lệnh ORG 0000H.
          Bạn duong_act nói đúng 1 nửa (nửa trên)...

          Nếu chỉ nhảy về đầu chương trình đã gọi là Reset thì sao người ta còn nghĩ ra Watchdog trong, Watchdog ngoài..

          Cho triệt để nên dùng Watchdog ngoài. Đơn giản thì dùng mạch RC sao cho khi Reset Logic của chân PORT1.2 không tác động được vào chân Reset lập tức mà bị "hãm lại một chút", Xịn hơn thì dùng IC chuyên dụng, Vd MAX1232...
          Hôm nay trời nắng chang chang.
          Mèo con đi học chẳng mang thứ gì.
          Chỉ mang một cái bút chì.
          Và mang một mẩu bánh mì con con.

          Comment


          • #6
            Đâu phải Reset là phải xóa hết các biến trên RAM và ngoại vi ? Thế theo bạn thế nào là reset ?
            Theo bạn thì người ta chế tạo thêm Watchdog vào MCU để làm gì ?
            Last edited by duong_act; 22-01-2013, 02:07.

            Comment


            • #7
              Hay đấy, mọi người nói tiếp về cái này đi.
              Mua bán thiết bị điện công nghiệp tại Hà Nội, toàn quốc.
              http://diencongnghiep360.com/
              http://tudienhathe.vn/

              Comment


              • #8
                Nguyên văn bởi Acxen_lupine Xem bài viết
                Vậy chưa phải là Reset vì các biến trong RAM, các ngoại vi sẽ không bị xóa... Rất có thể làm loạn chương trình...



                Bạn duong_act nói đúng 1 nửa (nửa trên)...

                Nếu chỉ nhảy về đầu chương trình đã gọi là Reset thì sao người ta còn nghĩ ra Watchdog trong, Watchdog ngoài..

                Cho triệt để nên dùng Watchdog ngoài. Đơn giản thì dùng mạch RC sao cho khi Reset Logic của chân PORT1.2 không tác động được vào chân Reset lập tức mà bị "hãm lại một chút", Xịn hơn thì dùng IC chuyên dụng, Vd MAX1232...
                89 khi đang chạy mà bị reset cứng thì nó chỉ trả giá trị 0000h cho thanh ghi PC để trở về địa chỉ ORG 0000h thôi, giá trị của RAM vẫn đc giữa nguyên chỉ có các thanh ghi port mới trở về mặc định 0xFF.

                Comment


                • #9
                  1. Đồng ý với các bạn là RESET ngoài hay bằng Watchdog trong sẽ không làm thay đổi giá trị hiện thời của INTERNAL RAM... cái này tôi nhầm, tôi đã xem lại!!!

                  2. Tuy nhiên nếu nói như bạn chung68:
                  Nguyên văn bởi chung1608 Xem bài viết
                  89 khi đang chạy mà bị reset cứng thì nó chỉ trả giá trị 0000h cho thanh ghi PC để trở về địa chỉ ORG 0000h thôi, giá trị của RAM vẫn đc giữa nguyên chỉ có các thanh ghi port mới trở về mặc định 0xFF.
                  Sẽ là thiếu vì tất cả các SFRs (chứ không phải chỉ có các port) sẽ đồng loạt trở về giá trị mặc định sau 2 chu kỳ máy.

                  3. Xin trả lời bạn duong_act:
                  Nhu cầu về Watchdog trong hay ngoài là nhằm đồng loạt đưa hệ thống (bao gồm CPU, SFRs...) về trạng thái mặc định ban đầu nhằm thoát khỏi 1 trạng thái xung đột hay bế tắc nào đó. (vd: tràn ngăn xếp chẳng hạn)

                  4. Tóm lại, ý của tôi là nếu làm theo cách của các bạn đưa ra (chỉ cho PC trỏ về 0000h) thì:
                  - Chỉ đơn thuần là làm cho chương trình được chạy lại từ đầu.
                  - Không giải quyết được vấn đề hệ thống đang rối loạn.
                  - không đạt mục đích của RESET đôi khi còn gây phản tác dụng. Cái phản tác dụng nhất ở đây là ngăn xếp sẽ tiếp tục đầy lên... nếu ta không nhớ xóa nó khi mới bắt đầu chương trình.
                  Tôi xin nhắc lại cái đáng giá nhất của RESET là việc đồng loạt đưa .... về trạng thái mặc định ban đầu, kể cả con trỏ ngăn xếp (SP), Thanh ghi Interrupt, Timer/Couter...
                  Hôm nay trời nắng chang chang.
                  Mèo con đi học chẳng mang thứ gì.
                  Chỉ mang một cái bút chì.
                  Và mang một mẩu bánh mì con con.

                  Comment


                  • #10
                    Nguyên văn bởi thanhlonguit Xem bài viết
                    Mình dùng tính hiệu của 8051 để reset nó nhưng sao không được, nó cứ reset liên tục. Ví dụ mình code khi có logic 0 vào port 1.1 thì port 1.2 tạo ra tín hiệu, mình lấy tín hiệu đó để reset nó (có thể dùng wa relay), nhưng nó cứ bị reset liên tục.
                    Nếu là 89s thì bác có thể dùng thẳng wdt của nó
                    Còn nếu là 89c thì bác có thể mắc mạch 555 tạo xung, sau mỗi chu kỳ định sẵn thì đưa xung ra reset lại 555, nếu vì lý do nào đó mà 89 bị treo thì nó sẽ dc 555 reset lại
                    - Mạch nạp vdk 8051, AVR, PIC, EEPROM
                    - Linh kiện điện tử cho sinh viên


                    Comment


                    • #11
                      Nguyên văn bởi Acxen_lupine Xem bài viết
                      1. Đồng ý với các bạn là RESET ngoài hay bằng Watchdog trong sẽ không làm thay đổi giá trị hiện thời của INTERNAL RAM... cái này tôi nhầm, tôi đã xem lại!!!

                      2. Tuy nhiên nếu nói như bạn chung68:

                      Sẽ là thiếu vì tất cả các SFRs (chứ không phải chỉ có các port) sẽ đồng loạt trở về giá trị mặc định sau 2 chu kỳ máy.

                      3. Xin trả lời bạn duong_act:
                      Nhu cầu về Watchdog trong hay ngoài là nhằm đồng loạt đưa hệ thống (bao gồm CPU, SFRs...) về trạng thái mặc định ban đầu nhằm thoát khỏi 1 trạng thái xung đột hay bế tắc nào đó. (vd: tràn ngăn xếp chẳng hạn)

                      4. Tóm lại, ý của tôi là nếu làm theo cách của các bạn đưa ra (chỉ cho PC trỏ về 0000h) thì:
                      - Chỉ đơn thuần là làm cho chương trình được chạy lại từ đầu.
                      - Không giải quyết được vấn đề hệ thống đang rối loạn.
                      - không đạt mục đích của RESET đôi khi còn gây phản tác dụng. Cái phản tác dụng nhất ở đây là ngăn xếp sẽ tiếp tục đầy lên... nếu ta không nhớ xóa nó khi mới bắt đầu chương trình.
                      Tôi xin nhắc lại cái đáng giá nhất của RESET là việc đồng loạt đưa .... về trạng thái mặc định ban đầu, kể cả con trỏ ngăn xếp (SP), Thanh ghi Interrupt, Timer/Couter...
                      Nhưng chủ top đâu có dùng để thoát trạng thái rối loạn hay mắc kẹt ở đâu đó mà là chủ ý reset khi có tác động mức 1 ở chân nào đó kia mà. Còn việc reset khi lỗi thì đượng nhiên là WDT rồi. Cái này thì không bàn cãi.

                      Comment


                      • #12
                        Nguyên văn bởi duong_act Xem bài viết
                        Nhưng chủ top đâu có dùng để thoát trạng thái rối loạn hay mắc kẹt ở đâu đó mà là chủ ý reset khi có tác động mức 1 ở chân nào đó kia mà. Còn việc reset khi lỗi thì đượng nhiên là WDT rồi. Cái này thì không bàn cãi.
                        Thế thì bạn dạy người ta làm thế nào để Reset có chủ ý đi. Nhưng nhớ là họ cần reset chứ không phải chạy lại chương trình từ đầu đâu nhé... Hai khái niệm này hoàn toàn khác nhau.
                        Hôm nay trời nắng chang chang.
                        Mèo con đi học chẳng mang thứ gì.
                        Chỉ mang một cái bút chì.
                        Và mang một mẩu bánh mì con con.

                        Comment


                        • #13
                          Ờ bạn chỉ tôi cách mà Reset không chạy lại chương trình từ đầu rồi tôi nói tiếp

                          Comment


                          • #14
                            Nguyên văn bởi duong_act Xem bài viết
                            Ờ bạn chỉ tôi cách mà Reset không chạy lại chương trình từ đầu rồi tôi nói tiếp
                            Hơ, cái này thì có khó gì đâu...
                            Bạn thừa sức nghĩ ra mà... đúng 1 tháng nữa nếu bạn vẫn chưa nghĩ ra tôi sẽ lập 1 topic mới về vấn đề này. Nếu bạn nghĩ ra thì nhờ bạn dành chút thời gian để giảng giải cho những anh em chưa biết nhé.
                            Hôm nay trời nắng chang chang.
                            Mèo con đi học chẳng mang thứ gì.
                            Chỉ mang một cái bút chì.
                            Và mang một mẩu bánh mì con con.

                            Comment


                            • #15
                              Nguyên văn bởi Acxen_lupine Xem bài viết
                              Hơ, cái này thì có khó gì đâu...
                              Bạn thừa sức nghĩ ra mà... đúng 1 tháng nữa nếu bạn vẫn chưa nghĩ ra tôi sẽ lập 1 topic mới về vấn đề này. Nếu bạn nghĩ ra thì nhờ bạn dành chút thời gian để giảng giải cho những anh em chưa biết nhé.
                              Tôi thì tôi gà nên tôi chịu Có gì cao kiến thì chia sẻ cùng anh em cái

                              Comment

                              Về tác giả

                              Collapse

                              thanhlonguit Tìm hiểu thêm về thanhlonguit

                              Bài viết mới nhất

                              Collapse

                              Đang tải...
                              X